Link-disjoint paths are two paths of links (edges) through a network that do not have overlapping links, and thus do not share the same fate in the event of a link failure. In other words, if one link fails, it will not impact both of the paths in a disjoint-path pair. A node using one disjoint path to reach a destination may simply switch to an alternate disjoint path, or topology, to reach the same destination without causing a forwarding loop in the network. There are a number of mechanisms that can be used to find link-disjoint paths in any given network topology simply and easily, in a distributed manner. However, the problem with these current mechanisms is that they typically generate disjoint paths that may have vastly different lengths (e.g., costs), where the computed disjoint path is typically much longer than another path computed by conventional routing algorithms.